const sequelize = require('../app/database')
const { DataTypes, Op } = require('sequelize')


const Menu = sequelize.define('menu', {
  // 在这里定义模型属性
  menuId: {
    type: DataTypes.UUID,
    defaultValue: DataTypes.UUIDV1,
    primaryKey: true
  },
  menuType: {
    type: DataTypes.STRING,
    validate: {
      isType(value) {
        if (!['menu', 'button'].includes(value)) {
          throw new Error('menuType参数错误，传参枚举为：menu、button');
        }
      }
    }
  },
  menuName: {
    type: DataTypes.STRING
  },
  menuCode: {
    type: DataTypes.STRING
  },
  path: {
    type: DataTypes.STRING
  },
  icon: {
    type: DataTypes.STRING
  },
  component: {
    type: DataTypes.STRING
  },
  menuState: {
    type: DataTypes.INTEGER,
    validate: {
      isState(value) {
        if (![1, 2].includes(value)) {
          throw new Error('menuState枚举值只能是1或2!')
        }
      }
    }
  },
  parentId: {
    type: DataTypes.UUID
  },
  createTime: {
    type: DataTypes.DATE,
    defaultValue: new Date()
  },
  updateTime: {
    type: DataTypes.DATE,
    defaultValue: new Date()
  }
}, {
  // 这是其他模型参数
  sequelize, // 我们需要传递连接实例
  modelName: 'menu' // 我们需要选择模型名称
})

// sequelize.sync({ force: true }).then(() => {
//     console.log("所有模型均已成功同步====.");
// })

module.exports = Menu